package com.teamwork_backend.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.teamwork_backend.entity.Resumes;
import com.teamwork_backend.entity.UserInfo;
import com.teamwork_backend.mapper.ResumesDao;
import com.teamwork_backend.service.ResumesService;
import com.teamwork_backend.utils.DataResult;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author windy
 * @since 2021-04-25
 */
@RestController
@RequestMapping("/resumes")
@Api(value = "ResumesController", tags = {"简历主要信息操作的接口"})
public class ResumesController {
    // 数据模型
    @Autowired
    private ResumesService resumesService;

    /** 增加简历
     */
    // 主键生日格式为"2021-01-22"（中间为短横线）
    @PostMapping("addresume") // Post方法
    @ApiOperation(value = "增加简历", notes = "增加简历", httpMethod = "POST")
    public DataResult addresume(
            @ApiParam(name = "resumes", value = "简历主要信息对象", required = true)
            // 请求体写了
            @RequestBody Resumes resumes)
    {
        // 设置添加成功的返回标志
        boolean flag = resumesService.save(resumes);
        if (flag) {
            // 成功返回数据
            return DataResult.finished().message("增加简历成功！");
        } else {
            // 失败返回数据
            return DataResult.failed().message("增加简历失败！");
        }
    }
    /** 更新简历
     */
    // 主键生日格式为"2021-01-22"（中间为短横线）
    @PostMapping("updateresume") // Post方法
    @ApiOperation(value = "更新简历", notes = "更新简历", httpMethod = "POST")
    public DataResult updateresume(
            @ApiParam(name = "resumes", value = "简历主要信息对象", required = true)
            // 请求体写了
            @RequestBody Resumes resumes)
    {
        // 设置添加成功的返回标志
        boolean flag = resumesService.updateById(resumes);
        if (flag) {
            // 成功返回数据
            return DataResult.finished().message("简历信息更新成功！");
        } else {
            // 失败返回数据
            return DataResult.failed().message("简历信息更新失败！");
        }
    }
    /** 获取简历通过用户唯一识别码 */
    @GetMapping("getresumeByuser") // Get方法
    @ApiOperation(value = "获取简历", notes = "获取简历", httpMethod = "GET")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userid", value = "用户唯一标示", required = true, dataType = "string")})
    // GET请求会直接在函数括号里面跟参数，并且写在外面写@ApiImplicitParams注解
    // POST请求需要写@RequestBody请求体，通过参数对象来传参数，一定要注意否则前端Vue+axios接收不了参数
    public DataResult getresumeByuser(String userid) {
        // 定义查询字段
        // wrapper用法见https://blog.csdn.net/m0_37034294/article/details/82917234
        QueryWrapper<Resumes> wrapper = new QueryWrapper<>();
        wrapper.select().eq("userid", userid);
        // 会自动生成 SELECT * FROM resumes WHERE userid = userid
        // 定义数据接收对象
        Resumes resumes = resumesService.getOne(wrapper);
        //列表 List<Resumes> resumesList = resumesService.list();
        // 判断是否存在该用户信息
        if(resumes != null) {
            // 成功返回数据
            return DataResult.finished().data("data", resumes).message("获取简历成功！");
        } else {
            // 失败返回数据
            return DataResult.failed().message("获取简历失败！");
        }
    }

    /** 获取简历通过简历唯一识别码 */
    @GetMapping("getresumeByid") // Get方法
    @ApiOperation(value = "获取简历", notes = "获取简历", httpMethod = "GET")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "resumeid", value = "简历唯一标示", required = true, dataType = "string")})
    // GET请求会直接在函数括号里面跟参数，并且写在外面写@ApiImplicitParams注解
    // POST请求需要写@RequestBody请求体，通过参数对象来传参数，一定要注意否则前端Vue+axios接收不了参数
    public DataResult getresumeByid(String resumeid) {
        // 定义查询字段
        // wrapper用法见https://blog.csdn.net/m0_37034294/article/details/82917234
        QueryWrapper<Resumes> wrapper = new QueryWrapper<>();
        wrapper.select().eq("resumeid", resumeid);
        // 会自动生成 SELECT * FROM resumes WHERE userid = userid
        // 定义数据接收对象
        Resumes resumes = resumesService.getOne(wrapper);
        //列表 List<Resumes> resumesList = resumesService.list();
        // 判断是否存在该用户信息
        if(resumes != null) {
            // 成功返回数据
            return DataResult.finished().data("data", resumes).message("获取简历成功！");
        } else {
            // 失败返回数据
            return DataResult.failed().message("获取简历失败！");
        }
    }

    // 把DAO引进来，才能调用里面的方法（Data Access Object）
    @Resource
    private ResumesDao resumesDao;

    /** 获取简历通过账户名 */
    @GetMapping("getresumebyaccount") // Get方法
    @ApiOperation(value = "获取简历通过账户名", notes = "获取简历通过账户名", httpMethod = "GET")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "account", value = "用户的账户", required = true, dataType = "string")})
    // GET请求会直接在函数括号里面跟参数，并且写在外面写@ApiImplicitParams注解
    // POST请求需要写@RequestBody请求体，通过参数对象来传参数，一定要注意否则前端Vue+axios接收不了参数
    public DataResult getresumebyaccount(String account) {

        Resumes resumes = resumesDao.getResumesByAccount(account);
        //列表 List<Resumes> resumesList = resumesService.list();
        // 判断是否存在该用户信息
        if(resumes != null) {
            // 成功返回数据
            return DataResult.finished().data("data", resumes).message("获取简历成功！");
        } else {
            // 失败返回数据
            return DataResult.failed().message("获取简历失败！");
        }
    }
}

